####################################################################################################
### Title: People Consistently View Elections and Civil Liberties as Key Components of Democracy ###
### Content: Cleaning the Thai dataset                                                           ###
### Date: August 24, 2024                                                                        ###
####################################################################################################

### Set-up ----
## Clean the working environment and set the working directory
rm(list = ls())
setwd("~/Desktop/Science_Replication/data_cleaning")

## Install the cjdata package (if not yet installed)
# library(devtools)  # version 2.4.3
# install_github(repo = "yhoriuchi/cjdata")

## Load the required packages
library(tidyverse) # version 2.0.0
library(cjdata)    # version 0.1.0

## Read the raw dataset
df <- read_Qualtrics("raw_TH.csv")

### Data cleaning ----
## Recode variables of respondent characteristics
# Minority status (1 = minority; 0 = otherwise)
df <- df %>% mutate(minority_bin = case_when(
  minority == "ใช่" ~ 1,
  minority == "ไม่ใช่" | minority == "ไม่แน่ใจ" ~ 0
))
df$minority_bin <- factor(df$minority_bin, 0:1, c("Non-Minority", "Minority"))
table(df$minority_bin)

# Gender (1 = female; 0 = male)
df <- df %>% rename(gender5 = gender)
df <- df %>% mutate(gender_bin = case_when(
  gender5 == "หญิง" ~ 1,
  gender5 == "ชาย" ~ 0
))
df$gender_bin <- factor(df$gender_bin, 0:1, c("Male", "Female"))
table(df$gender_bin)

# Self-reported political ideology (1 = right; 0 = left)
df <- df %>% mutate(ideo_bin = case_when(
  political == "ซ้ายอย่างมาก" |
    political == "ซ้ายปานกลาง" |
    political == "ซ้ายอยู่บ้าง" ~ 0,
  political == "ขวาอย่างมาก" |
    political == "ขวาปานกลาง" |
    political == "ขวาอยู่บ้าง" ~ 1
))
df$ideo_bin <- factor(df$ideo_bin, 0:1, c("Left", "Right"))
table(df$ideo_bin)

# Education (1 = college; 0 = no college)
df <- df %>% mutate(edu_bin = case_when(
  edu == "ต่ำกว่ามัธยมปลาย" |
    edu == "เทียบเท่ามัธยมปลาย" |
    edu == "ระดับอนุปริญญา (อ.ศศ.)" |
    edu == "วิทยาลัย ไม่ใช่ระดับปริญญา" ~ 0,
  edu == "ปริญญาตรี/ปริญญาสี่ปี (พธ.บ. วท.บ. บธ.บ.)" |
    edu == "ปริญญาโท-เอก (ศศ.ด. วท.ม. บธ.ม. ปร.ด. น.บ. พ.บ. ฯลฯ)" ~ 1
))
df$edu_bin <- factor(df$edu_bin, 0:1, c("No College", "College"))
table(df$edu_bin)

# Geopolitical alignment (1 = pro-China; 0 = pro-US)
df <- df %>% mutate(pro_china = case_when(
  china_us1 == "ค่อนข้างอยากให้เป็นสหรัฐอเมริกา" |
    china_us1 == "แน่นอนว่าอยากให้เป็นสหรัฐอเมริกา" ~ 0,
  china_us1 == "ค่อนข้างอยากให้เป็นจีน" |
    china_us1 == "แน่นอนว่าอยากให้เป็นจีน" ~ 1
))
df$pro_china <- factor(df$pro_china, 0:1 , c("Pro-US", "Pro-China"))
table(df$pro_china)

## Subset and reshape dataset into wide format that each row is a distinct conjoint task
df$Q1.1 <- ifelse(df$Q1.1 == "ประเทศ ก", "Country A", "Country B")
df$Q1.5 <- ifelse(df$Q1.5 == "ประเทศ ก", "Country A", "Country B")
df$Q1.9 <- ifelse(df$Q1.9 == "ประเทศ ก", "Country A", "Country B")
df_cj <- cjdata::reshape_conjoint(df, ResponseId, paste0("Q1.", seq(from = 1, to = 9, by = 4)))

## Rename the variables
df_cj <- df_cj %>% 
  rename(econ = "สถานการณ์ทางเศรษฐกิจระหว่างคนรวยกับคนจน...",
         populist = "เมื่อต้องกำหนดนโยบาย นักการเมือง...",
         direct = "ประชาชนลงคะแนนโดยตรงในการตัดสินใจนโยบาย...",
         civil = "เสรีภาพส่วนบุคคลของพลเมือง เช่น เสรีภาพในการพูด ศาสนา และการชุมนุมนั้น...",
         gender = "สิทธิของชายและหญิง...",
         expert = "ผู้เชี่ยวชาญอิสระที่ไม่ได้มาจากการเลือกตั้งมี...",
         obedient = "เมื่อประชาชนไม่ชอบนโยบายของรัฐบาล...",
         election = "การเลือกตั้งผู้นำทางการเมืองในประเทศนี้คือ...",
         leader = "เมื่อต้องตัดสินใจ ผู้นำประเทศ...")

## Reorder the factors
# Electoral democracy
df_cj$election <- 
  factor(df_cj$election, 
         levels = c("ไม่เกิดขึ้นหรือไม่มีอยู่จริง", "ลำเอียงเข้าข้างกลุ่มการเมืองที่กุมอำนาจอยู่", "กลุ่มการเมืองต่าง ๆ แข่งขันกันได้อย่างเสรีและเป็นธรรม"), 
         labels = c("Elections are not held", "Elections are biased", "Elections are free and fair"))

# Liberal democracy
df_cj$civil <- 
  factor(df_cj$civil, 
         levels = c("ไม่ได้รับการคุ้มครองโดยกฎหมายแต่อย่างใด", "ได้รับการคุ้มครองโดยกฎหมายน้อย", "ได้รับการคุ้มครองโดยกฎหมายอย่างยิ่ง"), 
         labels = c("Civil liberties are not at all protected", "Civil liberties are weakly protected", "Civil liberties are strongly protected"))

# Institutional democracy
df_cj$leader <- 
  factor(df_cj$leader, 
         levels = c("สามารถเลี่ยงอำนาจนิติบัญญัติและศาลได้เกือบทุกครั้ง", "สามารถเลี่ยงอำนาจนิติบัญญัติและศาลได้บางครั้ง", "ต้องเคารพอำนาจนิติบัญญัติและศาล"), 
         labels = c("Leader is weakly constrained", "Leader is somewhat constrained", "Leader is highly constrained"))

# Populist democracy
df_cj$populist <- 
  factor(df_cj$populist, 
         levels = c("ไม่ค่อยปฏิบัติตามสิ่งที่คนส่วนใหญ่ต้องการ", "บางครั้งปฏิบัติตามสิ่งที่คนส่วนใหญ่ต้องการ", "มักปฏิบัติตามสิ่งที่คนส่วนใหญ่ต้องการ"), 
         labels = c("Leader rarely follows the majority", "Leader sometimes follows the majority", "Leader frequently follows the majority"))

# Loyalist democracy
df_cj$obedient <- 
  factor(df_cj$obedient, 
         levels = c("ส่วนใหญ่เชื่อฟังรัฐบาล", "บางส่วนเชื่อฟังแต่บางส่วนท้าทายรัฐบาล", "ส่วนใหญ่ท้าทายรัฐบาล"), 
         labels = c("Dissidents mostly obey the gov't", "Dissidents occasionally obey the gov't", "Dissidents mostly challenge the gov't"))

# Substantive democracy (economy)
df_cj$econ <- 
  factor(df_cj$econ, 
         levels = c("ไม่เท่าเทียมกันอย่างมาก", "ค่อนข้างไม่เท่าเทียมกัน", "เท่าเทียมกัน"), 
         labels = c("Economic equality is very low", "Economic equality is somewhat low", "Economic equality is high"))

# Substantive democracy (gender)
df_cj$gender <- 
  factor(df_cj$gender, 
         levels = c("ไม่เท่าเทียมกันอย่างมาก", "ค่อนข้างไม่เท่าเทียมกัน", "เท่าเทียมกัน"), 
         labels = c("Gender equality is very low", "Gender equality is somewhat low", "Gender equality is high"))

# Technocratic democracy
df_cj$expert <- 
  factor(df_cj$expert, 
         levels = c("อิทธิพลต่อนโยบายไม่มากนัก", "อิทธิพลต่อนโยบายอยู่บ้าง", "อิทธิพลต่อนโยบายอย่างมาก"), 
         labels = c("Experts have small influence on policy", "Experts have some influence on policy", "Experts have much influence on policy"))

# Direct democracy
df_cj$direct <- 
  factor(df_cj$direct, 
         levels = c("นาน ๆ ครั้ง", "บางครั้ง", "บ่อย"),
         labels = c("Policies are rarely voted on", "Policies are sometimes voted on", "Policies are frequently voted on"))

## Incorporate respondent IDs and other covariates
df <- df %>% rename(id = ResponseId)
df_cj <- merge(df_cj, df, by = "id")

## Indicate the country
df_cj$country <- "TH"

## Export the dataset
write.csv(df_cj, "df_TH.csv", row.names = FALSE)
